package com.demo.test.other;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;

import com.fortest.R;

/**
 本页有可能存在内存泄露
 当页面退出，而post的任务还没执行完成时，泄露本Activity
 注意mHandler的定义部分，ide自动把它设置成黄色了，因为ide检测到有可能存在内存泄露，提醒开发者注意处理。
 可是mThread的定义和mHandler差不多，却没有被标黄。。。。

 匿名内部类导致内存泄露演示代码

 黄色区域解读：
 定义了一个内部类，它是Handler的子类，没有给这个子类定义名字，这个子类重写了Handler的一个方法
 new了一个上述匿名内部类的实例

 需要注意：并不是Handler导致的内存泄露
 **/
public class ActivityLeakA_Handler2 extends Activity {

    //提示1：This Handler class should be static or leaks might occur (anonymous android.os.Handler)
    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
        }
    };


    //没有提示1
    private Thread mThread = new Thread() {
        @Override
        public void run() {
            super.run();
        }
    };


//    @Override
//    protected void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//
//        setContentView(R.layout.activity_leak_common);
//        TextView textView=  findViewById(R.id.helper_text);
//        textView.setText("Handler　post 一个延迟很久的任务");
//        mHandler.postDelayed(new Runnable() {
//            @Override
//            public void run() {
//            }
//        }, 10000);
//    }

}